/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Application.Elements;

import Application.UnstableException;
import java.util.ArrayList;
import java.util.List;

/**
 * Oszcillátort megvalósító osztály
 * egy bemenete van
 * @author nothingam
 */
public class Osc extends Element {
    
    /**
     * A mar megkapott ertekek tarolasara.
     */
    public List<Boolean> history;
    
    /**
     * Konstruktor
     */
    public Osc() {
        history = new ArrayList<Boolean>();
    }

    /**
     * Az out-jába rakja ideiglenesen a jelet, amit majd a step() tárol el.
     * @return mindig false
     * @throws UnstableException 
     */
    public boolean simulate() throws UnstableException {
        if(inputs.size()==1)
            out=inputs.get(0).getOut();
        return false;
    }

    /**
     * Kitorlni az eddigi elmentett ertekeket
     */
    public void reset() {
        history.clear();
    }

    /**
     * Megvizsgalja, hogy nincs-e egynel több bemenete, ha van, hibat dob.
     * @return a hiba szovege, vagy null ha nincs hiba
     */
    @Override
    public String check() {
        if(inputs.size()!=1)
            return "Az oszcilloszkópnak pontosan egy bemenet kell.";
        else
            return null;
    }


    /**
     * Eltárolja az out értékét a historyba
     */
    public void step(){
        history.add(out);
    }

}
